package com.wlyuan.index.api.dto.order;

import com.wlyuan.tools.PageSort;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author yuanjie
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class OrderIndexFilterDTO extends PageSort implements Serializable {

    private static final long serialVersionUID = 2883439552278289889L;
    @ApiModelProperty("模糊查询")
    private String keyword;

    @ApiModelProperty("订单ID")
    private List<Integer> orderIds;

    @ApiModelProperty("订单异常")
    private Integer exception;

    @ApiModelProperty("是否绑定设备（0：否，1：是）")
    private Boolean hasDevice;

    @ApiModelProperty("签收类型")
    private Integer signType;

    private List<Integer> signTypes;

    @ApiModelProperty("是否已签收")
    private Boolean signed;

    @ApiModelProperty("逾期未签收")
    private Boolean overdueNoSign;

    @ApiModelProperty("签收时间")
    private LocalDateTime signAtBegin;

    @ApiModelProperty("签收时间")
    private LocalDateTime signAtEnd;

    @ApiModelProperty("是否生成场景证书（0：否，1：是）")
    private Boolean hasCert;

    @ApiModelProperty("是否开通场景证书（0：否，1：是）")
    private Boolean generateCert;

    @ApiModelProperty("收货方ID")
    private List<Integer> consigneeIds;

    @ApiModelProperty("发货方ID")
    private List<Integer> customerIds;

    @ApiModelProperty("是否装货")
    private Boolean load;

    @ApiModelProperty("是否提货")
    private Boolean pick;

    @ApiModelProperty("是否卸货")
    private Boolean unload;

    @ApiModelProperty("是否送货")
    private Boolean deliver;

    @ApiModelProperty("是否保价")
    private Boolean insure;

    @ApiModelProperty("订单号")
    private String orderNo;

    @ApiModelProperty("物品名称")
    private String goodsName;

    @ApiModelProperty("状态")
    private List<Integer> statuses;
    private Integer status;

    @ApiModelProperty("跟踪类型")
    private Integer trackType;

    @ApiModelProperty("电子回单号")
    private String trackNo;

    @ApiModelProperty("运输模式")
    private Integer transportMode;

    @ApiModelProperty("是否延迟")
    private Boolean delayed;

    @ApiModelProperty("发货详细地址")
    private String fromAddress;

    @ApiModelProperty("收货详细地址")
    private String toAddress;

    @ApiModelProperty("收货地址坐标")
    private String toLocation;

    @ApiModelProperty(value = "运输方式 市内/长途")
    private Integer distanceType;

    @ApiModelProperty("0:预计提前到达，1:预计超时，2:已超时")
    private Integer arrivalPlan;

    @ApiModelProperty("合同编号")
    private String contractNo;

    private List<String> contractNos;

    @ApiModelProperty("发货开始时间")
    private LocalDateTime fromTimeBegin;

    @ApiModelProperty("发货结束时间")
    private LocalDateTime fromTimeEnd;

    @ApiModelProperty("到货开始时间")
    private LocalDateTime toTimeBegin;

    @ApiModelProperty("到货结束时间")
    private LocalDateTime toTimeEnd;

    @ApiModelProperty("发货方名称")
    private String customerName;

    @ApiModelProperty("收货方名称")
    private String consigneeName;

    @ApiModelProperty("收货联系人")
    private String toContactName;

    @ApiModelProperty("收货联系人电话")
    private String toContactMobile;

    @ApiModelProperty("发货联系人")
    private String fromContactName;

    @ApiModelProperty("发货联系人电话")
    private String fromContactMobile;

    @ApiModelProperty("总数量-起始")
    private Integer totalQuantityBegin;

    @ApiModelProperty("总数量-截止")
    private Integer totalQuantityEnd;

    @ApiModelProperty("总重量-起始")
    private BigDecimal totalWeightBegin;

    @ApiModelProperty("总重量-截止")
    private BigDecimal totalWeightEnd;

    @ApiModelProperty("总体积-开始")
    private BigDecimal totalVolumeBegin;

    @ApiModelProperty("总体积-截止")
    private BigDecimal totalVolumeEnd;

    @ApiModelProperty("发货省份")
    private String fromProvince;

    @ApiModelProperty("发货省份编码")
    private String fromProvinceCode;

    @ApiModelProperty("发货城市")
    private String fromCity;

    @ApiModelProperty("发货城市编码")
    private String fromCityCode;

    @ApiModelProperty("发货区域")
    private String fromDistrict;

    @ApiModelProperty("发货区域编码")
    private String fromDistrictCode;

    @ApiModelProperty("收货省份")
    private String toProvince;

    @ApiModelProperty("收货省份编码")
    private String toProvinceCode;

    @ApiModelProperty("收货城市")
    private String toCity;

    @ApiModelProperty("收货城市编码")
    private String toCityCode;

    @ApiModelProperty("收货区域")
    private String toDistrict;

    @ApiModelProperty("收货区域编码")
    private String toDistrictCode;

    @ApiModelProperty("源订单ID")
    private List<String> sourceIds;

    @ApiModelProperty("创建时间")
    private LocalDateTime createAtBegin;

    @ApiModelProperty("创建时间")
    private LocalDateTime createAtEnd;

    @ApiModelProperty("警报时间")
    private LocalDateTime warnAtBegin;

    @ApiModelProperty("警报时间")
    private LocalDateTime warnAtEnd;

    @ApiModelProperty("租户ID")
    private Long tenantId;

    @ApiModelProperty("租户ID")
    private List<Long> tenantIds;

    @ApiModelProperty(value = "扩展业务查询", hidden = true)
    private String businessNo;

    @ApiModelProperty(value = "扩展业务查询", hidden = true)
    private List<String> businessNos;

    @ApiModelProperty("是否虚拟设备（0：否，1：是）")
    private Boolean hasVirtual;
}
